package algorithm.arithmetic.罗马到阿拉伯;

import java.util.HashMap;
import java.util.Map;

/**
 * @author xinchen by 2016/11/28
 * @version 1.0
 */
public class Solution {
    // 输入一个罗马数字（只能输入1-3999的罗马数字），
    // 请将其转换成阿拉伯数字，如果输入有误，请输出“exception”。
    // 如输入I，输出1；输入XX，输出20；输入XXVIII，输出27；输入ABC，输出异常。
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<String, Integer>();
        map.put("M", 1000);
        map.put("D", 500);
        map.put("C", 100);
        map.put("L", 50);
        map.put("X", 10);
        map.put("V", 5);
        map.put("I", 1);
        String exp = args[0];
        int xx = 0;
        int sum = 0;
        for (int i = 0; i < exp.length(); i++) {
            if (!map.containsKey(exp.charAt(i) + "")) {
                System.out.println("exception");
                return;
            }
            int up = map.get(exp.charAt(i) + "");
            xx += up;
            if (i != exp.length() - 1) {
                int next = map.get(exp.charAt(i + 1) + "");
                if (up > next) {
                    sum += xx;
                    xx = 0;
                } else if (up < next) {
                    if (xx / up > 1) {
                        System.out.println("exception");
                        return;
                    }
                    sum -= xx;
                    xx = 0;
                }
            } else {
                sum += xx;
            }
        }
        System.out.println(sum);
    }
}
